home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1995-09-10 | 1.9 KB | 58 lines | [TEXT/MPS ] |
- DEFINITION MODULE DataStacks;
- (* Copyright: © 1990 by Keith Nemitz, all rights reserved. *)
- (* all card names are/(must be) pascal strings. *)
-
- FROM SYSTEM IMPORT ADDRESS;
-
- FROM MacTypes IMPORT OSErr;
-
-
- CONST (* errors reported from DataStack calls. *)
- cardSizeTooBig = 701;
- tooManyCards = 702;
- indxOutOfRange = 703;
- notFound = 704;
-
- TYPE DataStack;
-
- VAR
- dataStackErr :OSErr;
-
- PROCEDURE NewDataStack(cSize,initial,grow:CARDINAL):DataStack;
- PROCEDURE DisposeDataStack(stack:DataStack);
-
- PROCEDURE LoadDataStack(fRefNum:INTEGER):DataStack;
- PROCEDURE DumpDataStack(stack:DataStack; fRefNum:INTEGER):BOOLEAN;
-
-
-
- PROCEDURE AddCard(stack:DataStack; data:ADDRESS; name:ARRAY OF CHAR):LONGCARD;
- (* returns ID = 0 if unable. 'data' IS Ptr. *)
- (* returns ID = 0 if grow was zero in call to NewDataStack. *)
-
- PROCEDURE RemoveCard(stack:DataStack; indx:CARDINAL; id:LONGCARD);
- (* by ind if not zero, then id unless name is filled *)
-
- PROCEDURE GetCardIndx(stack:DataStack; id:LONGCARD; name:ARRAY OF CHAR):CARDINAL;
- (* by id unless name is filled *)
- PROCEDURE GetCardID(stack:DataStack; indx:CARDINAL; name:ARRAY OF CHAR):LONGCARD;
- (* by indx unless name is filled *)
- PROCEDURE GetCardName(stack:DataStack; indx:CARDINAL; id:LONGCARD; VAR name:ARRAY OF CHAR);
- (* by indx if not zero, then id unless name is filled *)
-
- PROCEDURE SetCardName(stack:DataStack; indx,id:CARDINAL; name:ARRAY OF CHAR);
- (* by indx if not zero, then id. *)
- PROCEDURE CountCards(stack:DataStack):CARDINAL;
-
- PROCEDURE GetCardByIndx(stack:DataStack; indx:CARDINAL):ADDRESS;
- PROCEDURE GetCardByID(stack:DataStack; id:LONGCARD):ADDRESS;
- PROCEDURE GetCardByName(stack:DataStack; name:ARRAY OF CHAR):ADDRESS;
-
- TYPE DoProc = PROCEDURE(ADDRESS);
- (* these routines do not set (or clear) dataStackErr. *)
-
- PROCEDURE ForAllCardsDo(stack:DataStack; do:DoProc);
- PROCEDURE InIDOrderDo(stack:DataStack; do:DoProc);
- PROCEDURE InNameOrderDo(stack:DataStack; do:DoProc);
-
- END DataStacks.